//=============================================================================
//Name		:isr.c
//Purpose	:Interrupt Service Routine
//=============================================================================
#define _ISR_C
#include "includeAll.h"
//=============================================================================
// Function:	void INT0_int(void)
// Purpose:	INT0 pin interrupt vector
// Input:	none
// OutPut:	none
// Author:
//=============================================================================
void INT0_int(void) interrupt 0
{
	IE0 = 0; //clear interrupt flag
}
//=============================================================================
// Function:	void TIMER0_int(void)
// Purpose:	TIMER0 interrupt vector
// Input:	none
// OutPut:	none
// Author:
//=============================================================================
void TIMER0_int(void) interrupt 1
{
	TF0 = 0; //clear interrupt flag
	TR0 = 0;
#if POWERSAVE == 0
	g_ucTimer0RollOver++;
	g_ucAntiNoiseTimer++;
	if (g_ucAntiNoiseTimer > g_ucAntiNoiseTimerTemp)
		g_ucAntiNoiseTimer = g_ucAntiNoiseTimerTemp;
	if (g_bRawDataInvalidFlag)
	{
		g_ucAntiNoiseDebounceTimer++;
		if (g_ucAntiNoiseDebounceTimer > NOISEDEBOUNCETIME) //200ms
		{
			g_ucAntiNoiseTimer = 0;
			g_bRawDataInvalidFlag = 0;
		}
	}
#endif
	TH0 = (65536 - 14745) / 256; //4ms timer0 interrupt
	TL0 = (65536 - 14745) % 256;
	TR0 = 1;
	if (buzzLastTimer > 0)
	{
		buzzLastTimer--;
	}
	else
	{
		P3MODH &= b1111_0011;
		P3MODH |= b0000_0100;

		F_setBuzz();
	}
	//				timCloTime++;

	timer40ms++;
	timer500ms++;
	timer300ms++;
	timer1s++;
	if (bPowerOnOff)
	{
		CSDDFunction();
	}
	else
	{
		checkTime = 0;
		checkNum = 0;
		bDuanDian = 0;
		lastCSDD = 0;
		holdsetTimer = 0;
		holdtClrimer = 0;
	}
}
//=============================================================================
// Function:	void INT1_int(void)
// Purpose:	INT1 pin interrupt vector
// Input:	none
// OutPut:	none
// Author:
//=============================================================================
void INT1_int(void) interrupt 2
{
	IE1 = 0; //clear interrupt flag
}
//=============================================================================
// Function:	void TIMER1_int(void)
// Purpose:	TIMER1 interrupt vector
// Input:	none
// OutPut:	none
// Author:
//=============================================================================
void TIMER1_int(void) interrupt 3
{
	TF1 = 0; //clear interrupt flag
			 // TR1 = 0;

	d_rem_step = 0;
}
//=============================================================================
// Function:	void UART_int(void)
// Purpose:	UART interrupt vector
// Input:	none
// OutPut:	none
// Author:
//=============================================================================
void UART_int(void) interrupt 4
{
	TI = 0; //clear interrupt flag
	RI = 0; //clear interrupt flag
}
//=============================================================================
// Function:	void TIMER2_int(void)
// Purpose:	TIMER2 interrupt vector
// Input:	none
// OutPut:	none
// Author:
//=============================================================================
void TIMER2_int(void) interrupt 5
{
	TF2 = 0; //clear interrupt flag
	if (buzzLastTimer > 0)
	{

		F_buzz();
	}

	if ((p_rem == 0) && (lastP_rem == 1))
	{
		remControl();
	}
	lastP_rem = p_rem;
}
//=============================================================================
// Function:	void TIMER3_int(void)
// Purpose:	TIMER3 interrupt vector
// Input:	none
// OutPut:	none
// Author:
//=============================================================================
void TIMER3_int(void) interrupt 7
{
	INTFLG &= ~TF3;
#if POWERSAVE
	g_ucTimer0RollOver++;
	g_ucAntiNoiseTimer++;
	if (g_ucAntiNoiseTimer > g_ucAntiNoiseTimerTemp)
		g_ucAntiNoiseTimer = g_ucAntiNoiseTimerTemp;
	if (g_bRawDataInvalidFlag)
	{
		g_ucAntiNoiseDebounceTimer++;
		if (g_ucAntiNoiseDebounceTimer > 7)
		{
			g_ucAntiNoiseTimer = 0;
			g_bRawDataInvalidFlag = 0;
		}
	}
#endif
}
//=============================================================================
// Function:	void P1_int(void)
// Purpose:	P1 pin interrupt vector
// Input:	none
// OutPut:	none
// Author:
//=============================================================================
void P1_int(void) interrupt 8
{
	INTFLG &= ~P1IF;
}
//=============================================================================
// Function:	void INT2_int(void)
// Purpose:	INT2 pin interrupt vector
// Input:	none
// OutPut:	none
// Author:
//=============================================================================
void INT2_int(void) interrupt 9
{
	INTFLG &= ~IE2;
}
//=============================================================================
// Function:	void ADC_TK_int(void)
// Purpose:	ADC&TOUCHKEY interrupt vector
// Input:	none
// OutPut:	none
// Author:
//=============================================================================
void ADC_TK_int(void) interrupt 10
{
	INTFLG &= ~ADIF;
	INTFLG &= ~TKIF;
	TKCON2 &= ~TKAUTO; //disable touch key auto scan
}